<template>
<div>
    <!--商品设置-->
    <Productindex v-if="activeName == 'product'"></Productindex>

    <!--兑换设置-->
    <Settings v-if="activeName == 'settings'"></Settings>

    <!--兑换记录-->
    <Record v-if="activeName == 'record'"></Record>
  </div>
</template>

<script>
import { reactive, toRefs, defineComponent } from "vue";
import { useUserStore } from "@/store";
import Productindex from "./product/index.vue";
import Settings from "./product/Settings.vue";
import Record from "./product/Record.vue";
export default defineComponent({
  components: {
    Productindex,
    Settings,
    Record
  },
  setup() {
    const {
      bus_emit,
      bus_off,
      bus_on
    } = useUserStore();
    const state = reactive({
      bus_emit,
      bus_off,
      bus_on,
      /*参数*/
      param: {},
      /*当前选中*/
      activeName: "product",
      /*切换数组原始数据*/
      sourceList: [{
        key: "product",
        value: $t("plus.product_setting"),
        path: "/plus/points/product/index"
      }, {
        key: "settings",
        value: $t("plus.redeem_setting"),
        path: "/plus/points/product/settings"
      }, {
        key: "record",
        value: $t("plus.redeem_record"),
        path: "/plus/points/product/record"
      }],
      /*权限筛选后的数据*/
      tabList: []
    });
    return {
      ...toRefs(state)
    };
  },
  created() {
    this.tabList = this.authFilter();
    if (this.tabList.length > 0) {
      this.activeName = this.tabList[0].key;
    }
    if (this.$route.query.type != null) {
      this.activeName = this.$route.query.type;
    }

    /*监听传插件的值*/
    this.bus_on("activeValue", res => {
      this.activeName = res;
    });

    //发送类别切换
    let params = {
      active: this.activeName,
      list: this.tabList,
      tab_type: "points"
    };
    this.bus_emit("tabData", params);
  },
  beforeUnmount() {
    //发送类别切换
    this.bus_emit("tabData", {
      active: null,
      tab_type: "points",
      list: []
    });
    this.bus_off("activeValue");
  },
  methods: {
    /*权限过滤*/
    authFilter() {
      let list = [];
      for (let i = 0; i < this.sourceList.length; i++) {
        let item = this.sourceList[i];
        if (this.$filter.isAuth(item.path)) {
          list.push(item);
        }
      }
      return list;
    }
  }
});
</script>

